perm filename MPRNT.F4[MSS,LCS]4 blob
sn#128713 filedate 1974-11-06 generic text, type T, neo UTF8
00100 C MPRNT.F4********** DRAWS MUSIC ON THE PLOTTER OR XGP **********
00200 C *** READS DATA FROM CLFX, TAIL, FERM, BREP, REST, DRAW1, DRAW2
00300 C LOAD WITH PPSRT, PLTCMD, NOTWRT, ITMSBX, TREST, CLFZ, LOOK
00400
00500 IMPLICIT INTEGER(A-Q,S-Z)
00600 REAL DIS,PWDS,DISX,A,B,STFF,CENTR,POS,BOT,TOP,TOP2
00700 COMMON /DL/IXRX,SAVER,NAME
00800 CC DIMENSION V(78),LIST(200)
00900 COMMON/FRMT/F78F(1),FA1(1),FA5(1),ASK
00910 CC COMMON/FRMT/F78F(1),FA1(1),FA5(1),ASK/SIZ/RSZ,JCEN,KCEN
01000 COMMON/ALF/INP(72),ML/XRN/RN(4000)/STF/RSTFAC(8),RSTJC
01100 COMMON /PLTR/PLT,RHT,DIS/PTR/PWDS(250),ITEM,L,I,M
01200 COMMON RJB,JA,CENTR,JB,RJQ(20),JQ(20)/POSI/STFF(8),JJB,POS
01300 COMMON/DPY/GO,TOP,BOT
01310 CC COMMON/DPY/GO,RXGP,TOP,BOT
01400 EQUIVALENCE (JC,JQ(1)),(JD,JQ(2)),(JE,JQ(3)),(RJE,RJQ(3))
01500 1,(RJF,RJQ(4)),(JG,JQ(5)),(JH,JQ(6)),(JF,JQ(4)),(RJG,RJQ(5))
01600 1,(RJD,RJQ(2)),(RJC,RJQ(1)),(I1,INP(1))
01700 CC 1,(LIST,RN(3100)),(V,RN(3000))
01800 DATA STFF/-369.0,-246.0,-123.0,0.0,123.0,246.0,369.0,450.0/
01900 1 ,IP/'P'/
02000
02100 TOP2=-999
02200 CC RXGP=0
02300 I1=0
02400 C RESTART PROG. OR TYPE 'F' TO FINISH PLOTTER.(IT'S NOT AUTOMATIC.)
02500 2 PLOTIT=0
02600 CC RSZ=.845
02700 TOP=-999
02800 BOT=999
02900 PLT=0
03000 PWDS(1)=1.
03100 EDX=-1
03200 DO 1402 K=1,8
03300 1402 RSTFAC(K)=1.
03400 M=1
03500 ITEM=0
03600 CC IXRX=0
03700 I=1
03800 CC58 GO=-1
03900 GO TO 5504
04000
04100
04200 11 CALL NOTWRT
04300 57 IF(PLT)GO TO 6120
04400 ITEM=ITEM+1
04500 IF(EDX.NE.-1.AND.M.LT.I)GO TO 6120
04600 IF(PLOTIT.EQ.-2)GO TO 2311
04700 CZZ PWDS(ITEM+1)=I
04800 CZZ PLT=0
04900 CC GO=-1
05000
05100 5504 IF(I1.EQ.IP)GO TO 2311
05200 CC59 TYPE 56
05300 CC ACCEPT 89,INP
05320 INP(1)='P'
05340 INP(2)='X'
05400 311 JA=0
05500 IF(I1.NE.IP)GO TO 85
05600 2311 CALL PLTCMD
05700 IF(PLOTIT.EQ.0)GO TO 3005
05800 I1=IP
05900 PLOTIT=-1
06000 C 'PXG' OR 'PXC' GOES TO 'PLOT COMMAND' ROUTINE
06100 CC89 FORMAT(72A1)
06200
06300 6531 M=1
06400 EDX=-1
06500 DO 5532 K=1,9
06600 5532 JQ(K)=RJQ(K)
06700 590 IF(PLOTIT.EQ.-1)GO TO 121
06800 I1=0
06900 243 RJB=1.
07000 C TO RUN THROUGH DATA.
07100 CXX241 RSZ=.845*RJB
07200 RJB=0
07300 RJC=0
07400 RJD=0
07500 TOP=-999
07600 BOT=999
07700 C GOES TO PLOTTER
07800 85 M=1
07900 I=PWDS(ITEM+1)
08000 ITEM=0
08100 8852 PLT=1
08200 EDX=0
08300 CC GO=0
08400 GO TO 6120
08500
08600 60 IF(JA.NE.88)GO TO 601
08700 RSTFAC(JC+4)=RJB
08800 C FOR STAFF SIZE FACTOR WITHOUT STAFF.
08900 GO TO 57
09000 CXX601 RSTJC=RSTFAC(JC+4)
09050 601 RSTJC=RSTFAC(JC+4)
09100 5541 POS=STFF(JC+4)
09200 JB=RHORZ(RJB)
09300 C LINE IS DIVIDED INTO 200 POINTS.
09400 CENTR=POS
09500 551 IF(JA.EQ.4.OR.JA.EQ.10)GO TO 25
09600 IF(JA.EQ.7)GO TO 81
09700 IF(JA.LE.12)GO TO 11
09800 IF(JA.EQ.18)GO TO 80
09900 CALL ALPHA
10000 GO TO 57
10100
10200 81 CALL KSIG
10300 GO TO 57
10400
10500 80 CALL METER
10600 GO TO 57
10700
10800 25 CALL ITMSUB
10900 C BAR LINES, BEAMS, STAFF LINES ****
11000 GO TO 57
11100
11200 3005 REWIND 21
11300 C GUARDS AGAINST LOSSAGE!
11400 PLOTIT=-2
11500 CALL IFILE(21,NAME)
11600 C JUMP TO READ BIG FILES
11700 2200 J=ITEM+1
11800 2202 READ(21),X,Y,(PWDS(K),K=J,X+J),(RN(K),K=I,Y+I-2)
11910 CC 1 (PWDS(K),K=J,X+J),(RN(K),K=I,Y+I-2),ISCR,(V(K),K=1,ISCR),
12000 CC 1 LCNT,(LIST(K),K=1,LCNT)
12100 CC READ(21),RSTFAC,STFF
12200 ITEM=ITEM+X
12300 I=Y
12400 GO TO 6531
12500 121 IF(PLOTIT.EQ.0)GO TO 5504
12600 5121 CALL PLTSRT
12700 C IF P5=0 MOVES UP AT START, IF P6=0 MOVES UP AT END.
12800 PLT=-1
12900 C (JH) P8=1 OR 2 FOR 2-PASS PLOTS
13000 CC M=I
13100 CC I=I+M-1
13200 IF(RJB.EQ.0)RJB=1.
13300 DIS=RJB*1.24
13400 CXX IF(RJC.EQ.0)RJC=RJB
13500 RHT=RJC*1.2
13600 C 1.24 AND 1.2 ARE TO FIT 8 1/2 X 11 FORMAT
13700 BOT=-BOT*RHT
13710 CX IXGP=100+BOT
13800 IF(TOP2.EQ.-999)GO TO 8121
13900 BOT=BOT+TOP2
13950 CC IXGP=IXGP+TOP2
14000 GO TO 9121
14050 CC GO TO 9122
14100 8121 CALL PLOTS(K)
14200 CC RXGP=995.-BOT
14240 C FOR 3/4" BOTTOM MARGIN
14260 CX9122 BOT=0
14280 C THIS HAPPENS FIRST TIME ONLY.
14300 9121 NOMOVE=RJF+RJG*148.*RJC
14400 C RJF=1 FOR NO MOVE AT END. RJG=# OF STAVES TO MOVE FOR NEW STAFF 0.
14500 CC IXGP=JD
14600 C (JD) P4=1 FOR XGP OUTPUT
14700 CC IF(JE.NE.0)GO TO 1122
14720 IF(JE.NE.0)GO TO 6120
14800 CC IF(RJD.NE.0)GO TO 6120
14900 CC IF(TOP2.NE.-999)RXGP=RXGP-BOT
15000 C MOVES 0 POINT OVER EACH TIME.
15100 CC GO TO 1122
15200 6121 CALL PLOT(0,IFIX(BOT),-3)
15300 C MOVES PLOTTER UP IF P5=0.
15400 CC1122 IXRX=IXGP
15500
15600 C NEXT RUNS THROUGH DATA WITH NEW CHANGES.
15700 6120 IF(M.GE.I)GO TO 7120
15800 CNT=RN(M)
15900 DO 6220 K=CNT+1,10
16000 JQ(K)=0
16100 6220 RJQ(K)=0
16200 JA=RN(M+1)
16300 M=M+2
16400 RJB=RN(M)
16500 DO 9120 K=1,CNT
16600 RJQ(K)=RN(M+K)
16700 9120 JQ(K)=RJQ(K)
16800 M=CNT+M+1
16900 CC IF(EDX.LE.0)GO TO 60
17000 CC GO TO 5504
17050 GO TO 60
17100
17200 7120 M=1
17300 CZ IF(EDX)GO TO 71201
17400 CZ IF(PLT.EQ.1)EDX=-1
17500 CZ PLT=0
17600 C RETURNS FOR 'SL'=SAVE LAST
17700 CZ GO TO 5504
17800 71201 X=50*RHT
17900 TOP=TOP*RHT+X
18000 IF(NOMOVE.NE.0)TOP=0
18100 IF(NOMOVE.GT.1)TOP=NOMOVE
18200 CALL PLOT(0,IFIX(TOP),3)
18250 CX CALL PLOT(0,TOP+IXGP,3)
18300 TOP2=TOP
18400 GO TO 2
18500 C TO MOVE 'PLOTTER' FOR XGP OUTPUT
18600 C MOVES PLOTTER UP
18700 C ALWAYS START PLOT WITH BOTTOM UNIT ON PAGE AND WORK UP.
18800
18900 CC56 FORMAT(' PXG OR PXC'/)
19000 END